import CryptoJS from 'crypto-js'
// 加密
const secretKey = 'your-secret-key-12311111'

// 加密函数
export const aesEncrypt = (text) => {
  const key = CryptoJS.enc.Utf8.parse(secretKey)
  const iv = CryptoJS.lib.WordArray.random(16) // 生成一个随机的16字节IV
  //   const fixedIv = CryptoJS.enc.Hex.parse('0000000000000000')

  const encrypted = CryptoJS.AES.encrypt(text, key, {
    iv: iv,
    mode: CryptoJS.mode.CBC,
    padding: CryptoJS.pad.Pkcs7
  })

  // 将IV和密文转换为Base64字符串，以便通过JSON发送
  const ivBase64 = CryptoJS.enc.Base64.stringify(iv)
  const ciphertextBase64 = encrypted.ciphertext.toString(CryptoJS.enc.Base64)
  return ciphertextBase64 + '&' + ivBase64
}

// 解密函数
export const aesDecrypt = (ciphertextAndIv) => {
  // 将传入的ciphertext和IV字符串分割开
  const [ciphertextBase64, ivBase64] = ciphertextAndIv.split('&')

  // 将Base64字符串转换回WordArray对象
  const key = CryptoJS.enc.Utf8.parse(secretKey)
  const iv = CryptoJS.enc.Base64.parse(ivBase64)
  const ciphertext = CryptoJS.enc.Base64.parse(ciphertextBase64)

  // 使用AES算法、CBC模式和Pkcs7填充进行解密
  const decrypted = CryptoJS.AES.decrypt(
    {
      ciphertext: ciphertext
    },
    key,
    {
      iv: iv,
      mode: CryptoJS.mode.CBC,
      padding: CryptoJS.pad.Pkcs7
    }
  )

  // 将解密后的WordArray对象转换为字符串
  return decrypted.toString(CryptoJS.enc.Utf8)
}
